我們來到最後一個主題啦~前面五個分類中,我們幾乎都會使用到 Linux 系統來解題,今天來整理些基本的指令
一、nc
(Netcat)
Netcat 可以進行 TCP 或 UDP 的連接,並能夠用來測試網路連通性。在之前的解題中我們常常使用他來連上題目靶機。
nc [主機名] [port]
二、grep
用來在檔案或輸入資料流中搜尋符合特定模式(通常是正規表達式)的字串。其名稱來自於 "global regular expression print" 的縮寫。對於在大量資料中搜索特定字串的工具,能快速地找到符合條件的行數或關鍵字。
grep '想找的東西' [文件]
grep -i '想找的東西' [文件]
grep -n '想找的東西' [文件]
三、strings
用於從二進位檔案中提取可讀字串的工具。它能從可執行檔、二進位數據檔或任何其他檔案中提取出 ASCII 和 Unicode 字串。
strings [檔案]
四、|
(pipe)
將一個命令的輸出作為另一個命令的輸入的技術。可以串聯多個命令。能夠避免中間結果儲存到暫存檔案,減少不必要的 I/O 操作和硬碟空間佔用。
command1 | command2
-> command1 的標準輸出(stdout)會通過 pipe 傳遞給 command2,並作為其標準輸入(stdin)。
command1 | command2 | command3
接著進入今天的題目
Lab_1 - strings it
題目提供一個檔名為 strings
的檔案,在 terminal 輸入 strings strings
後會發現印出的結果會塞爆版面。直接使用記事本等工具打開雖然也找的到 flag,不過我們有個更快速的方法,搭配 grep
與 |
指令使用。
由於我們知道 flag 的格式會是 picoCTF{},輸入 strings strings | grep pico
可以將符合 pico
字串的那行印出來,就會拿到我們的 flag。
Lab_2 - plumbing
這題我們需要連到靶機,使用 nc jupiter.challenges.picoctf.org 7480
連線到題目。一連上去後會遇到跟上一題一樣噴一大堆不需要的字串。多到不會想去翻的,這時候一樣使用 | grep
,將關鍵字過濾出來。
一樣在 terminal 上輸入 nc jupiter.challenges.picoctf.org 7480 | grep pico
,如此一來 flag 就會送到我們的眼前啦。
今天的練習就到這邊,以下是參考資料,請搭配服用:
nc 指令
grep 指令 IBM
strings 指令 IBM
pipe 使用
正規表示法
內文如有錯誤,還請不吝指教~